package junit.singledesign2;

/**
 * 懒汉单例模式
 */
public class King {
    //将构造方法私有化，使其不能在类的外部通过new关键字来实例化该对象
    private King(){}
    //在该类内部产生一个唯一的实例化对象，并且将其封装为private static 类型的成员变量
    private static King king;//null
    //定义一个静态方法返回这个唯一对象,要用的时候才实例化该对象
    //防止多线程时可能实例化多个对象，不能保证单例的状态，所以加上关键字synchronized同步
    public static synchronized King getInstance() {
        if(king==null) {
            king = new King();
        }
        return king;
    }
}
